package com.atguigu.rabbit.producer.test;

import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.UUID;

@SpringBootTest
public class Producer06Confirm {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    /**
     * 消息可靠性投递 confirm机制 测试
     */
    @Test
    public void test01() {

        // TODO: MySQL数据库中设计一个消息表包含如下列：消息id、交换机名称、路由、消息内容、消息状态（是否成功发送给交换机）、定义需要重试次数（初始值>0）、已重试次数（初始值0）
        // TODO: 在发送消息之前，将消息的以上内容存入MySQL数据库，并获取到消息id
        // 通过CorrelationData对象进行封装
        String msgId = UUID.randomUUID().toString().replace("-", "");// 模拟数据库生成的id
        CorrelationData correlationData = new CorrelationData(msgId);

        // 发送消息（指定一个错误的交换机）
        rabbitTemplate.convertAndSend("direct_exchange2", "error", "hello direct exchange....", correlationData);
    }
}